package club.kingyin.easycache.key;

import club.kingyin.easycache.component.PostProcess;

/**
 * 目标执行后置处理器
 * 可对执行防范进行环绕增强，所有Invoke扩展点都基于此类
 * before-key-after
 *
 * @param <T> 目标方法
 */
public interface InvokePostProcess<T> extends PostProcess {

    /**
     * 执行前增强，此流程在构建Key之前
     *
     * @param target 目标方法
     */
    void postProcessBeforeEasyCacheKey(T target);

    /**
     * 执行后增强，此流程在构建Key之后
     *
     * @param target 目标方法
     * @param key 原始构建Key
     * @return 增强Key
     */
    EasyCacheKey postProcessAfterEasyCacheKey(T target,EasyCacheKey key);
}
